package com.bifang.module.file.common.vo;

import com.bifang.assistant.common.vo.BasePageVO;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Data
public class FileInfoVO extends BasePageVO {

    @Schema(description = "文件id")
    private BigDecimal fileId;

    @Schema(description = "文件显示id")
    private String showId;

    @Schema(description = "文件开始id")
    private BigDecimal fileStartId;

    @Schema(description = "文件结束id")
    private BigDecimal fileEndId;

    @Schema(description = "文件分类")
    private String fileClassCode;

    @Schema(description = "文件分类标题")
    private String classTitle;

    @Schema(description = "文件名称")
    private String fileName;

    @Schema(description = "文件后缀（文件类型）")
    private String fileSuffix;

    @Schema(description = "文件环境主键")
    private Long fileEnvId;

    @Schema(description = "文件存放路径")
    private String filePath;

    @Schema(description = "文件大小")
    private Long fileSize;

    @Schema(description = "公司id")
    private String orgId;

    @Schema(description = "是否加密，0 否 1 是")
    private String encryptionFlag;

    @Schema(description = "文件加密密码")
    private String filePassowrd;

    @Schema(description = "压缩包解压密码")
    private String zipPassword;

    @Schema(description = "是否归档 0 否 1是")
    private String fielderFlag;

    @Schema(description = "上传应用id")
    private Long upAppId;

    /** 上传应用 */
    @Schema(description = "上传应用")
    private String upAppName;

    @Schema(description = "上传人")
    private String uploader;

    @Schema(description = "上传人id")
    private String uploaderId;

    @Schema(description = "上传时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date upTime;

    @Schema(description = "归档人")
    private String fileder;

    @Schema(description = "归档人id")
    private String filederId;

    @Schema(description = "归档时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date filederTime;

    @Schema(description = "备注")
    private String remarks;

    @Schema(description = "文件md5 用于比对是否一致")
    private String fileMd5;

    /** 文件存放路径 */
    @Schema(description = "文件存放路径")
    private String fileClassPath;
    /** 环境名称 */
    @Schema(description = "环境名称")
    private String envName;

    /** 文件服务器类型 ftp sftp socket fastfds local http */
    @Schema(description = "文件服务器类型 ftp sftp socket fastfds local http")
    private String fileServiceType;

    /** 文件服务ip */
    @Schema(description = "文件服务ip")
    private String fileServiceIp;

    /** 端口 */
    @Schema(description = "端口")
    private Integer fileServicePort;

    /** 用户 */
    @Schema(description = "用户")
    private String fileServiceUser;

    /** 密码 */
    @Schema(description = "密码")
    private String fileServicePwd;

    /** 存储服务器组（FastDFS） */
    @Schema(description = "存储服务器组（FastDFS）")
    private String storageGroup;

    /** 文件存放基础路径 */
    @Schema(description = "文件存放基础路径")
    private String fileBasePath;

    /** 静态文件服务访问端口 */
    @Schema(description = "静态文件服务访问端口")
    private Integer webPort;

    /** 静态文件访问基础路径 */
    @Schema(description = "静态文件访问基础路径")
    private String webBasePath;

    /** base64 文件 */
    @Schema(description = "base64文件")
    private String file;
    /** 上传客户端 */
    @Schema(description = "appId")
    private Long appId;

    @Schema(description = "保密级别")
    private String secrecyLevel;


    /** 强制执行标志 */
    @Schema(description = "强制执行标志")
    private Boolean forceFlag;

    @Schema(description = "是否根据上传人控制，0 否 1是")
    private Boolean uploaderFlag;

    @Schema(description = "文件元数据")
    private List<FileMetadataVO> metadataList;

    @Schema(description = "默认访问过期时间，单位秒")
    private BigDecimal expireTime;
    @Schema(description = "文件上传开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startTime;
    @Schema(description = "文件上传调用文件服务器开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date otherStartTime;
    @Schema(description = "文件上传调用文件服务器结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date otherEndTime;
    @Schema(description = "文件上传结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;
    @Schema(description = "图片压缩原文件是否保留：true 删除 false 保留 默认为true")
    private Boolean imgCompressDel;


    @Schema(description = "元数据")
    private String fieldId;

    @Schema(description = "元数据值")
    private String fieldValue;

    @Schema(description = "是否有读权限")
    private String appReadFlag;

    @Schema(name = "tableName",description = "保存的表名")
    private String tableName;

}
